package fachada;

import java.util.Calendar;
import java.util.List;

import javax.ejb.Remote;

import utils.exceptions.ArticuloNoEncontradoException;
import utils.exceptions.ArticuloSinStockException;
import utils.exceptions.VentaRechazadaException;
import entities.vo.ArticuloEnvtVO;
import entities.vo.ArticuloPalcVO;
import entities.vo.ArticuloVO;
import entities.vo.ENVTVO;
import entities.vo.FacturaVO;
import entities.vo.OFADVO;
import entities.vo.PedidoVO;

@Remote
public interface Fachada {

	//Model
	public ArticuloVO getArticulo(Integer referencia);
	
	//ModelListaArticulo
	public List<ArticuloVO> getArticulos();
	
	//ModelPALC
	public String generarPedido(PedidoVO pedidoVO);
	public List<ArticuloPalcVO> getArticulosPALC();
	public Long getNroNuevoPedido();
	
	//ModelRecibirENVT
	public String recibirENVT(ENVTVO envt)throws Exception;
	
	//ModelVentaArticulo
	
	public void generarFactura(FacturaVO factura)throws VentaRechazadaException;
	public Calendar getFecha();
	public Long getNumeroFactura();
	
	public List<ArticuloVO> getNuevoArticulo(List<ArticuloVO> articulos);
	
	//
	public String procesarNuevaOFAD(OFADVO ofad);

	public List<ArticuloEnvtVO> getArticulosENVT(List<ArticuloEnvtVO> articulos);

	public ArticuloVO actualizarStock(Integer referencia, int stock)throws ArticuloSinStockException, ArticuloNoEncontradoException;
			
}
